// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s

// CHECK: crc32b 485498096, %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf0,0x2c,0x25,0xf0,0x1c,0xf0,0x1c]
crc32b 485498096, %r13d

// CHECK: crc32b 64(%rdx), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf0,0x6a,0x40]
crc32b 64(%rdx), %r13d

// CHECK: crc32b -64(%rdx,%rax,4), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf0,0x6c,0x82,0xc0]
crc32b -64(%rdx,%rax,4), %r13d

// CHECK: crc32b 64(%rdx,%rax,4), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf0,0x6c,0x82,0x40]
crc32b 64(%rdx,%rax,4), %r13d

// CHECK: crc32b 64(%rdx,%rax), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf0,0x6c,0x02,0x40]
crc32b 64(%rdx,%rax), %r13d

// CHECK: crc32b %r14b, %r13d
// CHECK: encoding: [0xf2,0x45,0x0f,0x38,0xf0,0xee]
crc32b %r14b, %r13d

// CHECK: crc32b (%rdx), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf0,0x2a]
crc32b (%rdx), %r13d

// CHECK: crc32w 485498096, %r13d
// CHECK: encoding: [0x66,0xf2,0x44,0x0f,0x38,0xf1,0x2c,0x25,0xf0,0x1c,0xf0,0x1c]
crc32w 485498096, %r13d

// CHECK: crc32w 64(%rdx), %r13d
// CHECK: encoding: [0x66,0xf2,0x44,0x0f,0x38,0xf1,0x6a,0x40]
crc32w 64(%rdx), %r13d

// CHECK: crc32w -64(%rdx,%rax,4), %r13d
// CHECK: encoding: [0x66,0xf2,0x44,0x0f,0x38,0xf1,0x6c,0x82,0xc0]
crc32w -64(%rdx,%rax,4), %r13d

// CHECK: crc32w 64(%rdx,%rax,4), %r13d
// CHECK: encoding: [0x66,0xf2,0x44,0x0f,0x38,0xf1,0x6c,0x82,0x40]
crc32w 64(%rdx,%rax,4), %r13d

// CHECK: crc32w 64(%rdx,%rax), %r13d
// CHECK: encoding: [0x66,0xf2,0x44,0x0f,0x38,0xf1,0x6c,0x02,0x40]
crc32w 64(%rdx,%rax), %r13d

// CHECK: crc32w %r14w, %r13d
// CHECK: encoding: [0x66,0xf2,0x45,0x0f,0x38,0xf1,0xee]
crc32w %r14w, %r13d

// CHECK: crc32w (%rdx), %r13d
// CHECK: encoding: [0x66,0xf2,0x44,0x0f,0x38,0xf1,0x2a]
crc32w (%rdx), %r13d

// CHECK: crc32l 485498096, %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf1,0x2c,0x25,0xf0,0x1c,0xf0,0x1c]
crc32l 485498096, %r13d

// CHECK: crc32l 64(%rdx), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf1,0x6a,0x40]
crc32l 64(%rdx), %r13d

// CHECK: crc32l -64(%rdx,%rax,4), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf1,0x6c,0x82,0xc0]
crc32l -64(%rdx,%rax,4), %r13d

// CHECK: crc32l 64(%rdx,%rax,4), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf1,0x6c,0x82,0x40]
crc32l 64(%rdx,%rax,4), %r13d

// CHECK: crc32l 64(%rdx,%rax), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf1,0x6c,0x02,0x40]
crc32l 64(%rdx,%rax), %r13d

// CHECK: crc32l %r14d, %r13d
// CHECK: encoding: [0xf2,0x45,0x0f,0x38,0xf1,0xee]
crc32l %r14d, %r13d

// CHECK: crc32l (%rdx), %r13d
// CHECK: encoding: [0xf2,0x44,0x0f,0x38,0xf1,0x2a]
crc32l (%rdx), %r13d

// CHECK: crc32q 485498096, %r13
// CHECK: encoding: [0xf2,0x4c,0x0f,0x38,0xf1,0x2c,0x25,0xf0,0x1c,0xf0,0x1c]
crc32q 485498096, %r13

// CHECK: crc32q 64(%rdx), %r13
// CHECK: encoding: [0xf2,0x4c,0x0f,0x38,0xf1,0x6a,0x40]
crc32q 64(%rdx), %r13

// CHECK: crc32q -64(%rdx,%rax,4), %r13
// CHECK: encoding: [0xf2,0x4c,0x0f,0x38,0xf1,0x6c,0x82,0xc0]
crc32q -64(%rdx,%rax,4), %r13

// CHECK: crc32q 64(%rdx,%rax,4), %r13
// CHECK: encoding: [0xf2,0x4c,0x0f,0x38,0xf1,0x6c,0x82,0x40]
crc32q 64(%rdx,%rax,4), %r13

// CHECK: crc32q 64(%rdx,%rax), %r13
// CHECK: encoding: [0xf2,0x4c,0x0f,0x38,0xf1,0x6c,0x02,0x40]
crc32q 64(%rdx,%rax), %r13

// CHECK: crc32q %r14, %r13
// CHECK: encoding: [0xf2,0x4d,0x0f,0x38,0xf1,0xee]
crc32q %r14, %r13

// CHECK: crc32q (%rdx), %r13
// CHECK: encoding: [0xf2,0x4c,0x0f,0x38,0xf1,0x2a]
crc32q (%rdx), %r13

// CHECK: pcmpestri $0, 485498096, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0x34,0x25,0xf0,0x1c,0xf0,0x1c,0x00]
pcmpestri $0, 485498096, %xmm6

// CHECK: pcmpestri $0, -64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0x74,0x82,0xc0,0x00]
pcmpestri $0, -64(%rdx,%rax,4), %xmm6

// CHECK: pcmpestri $0, 64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0x74,0x82,0x40,0x00]
pcmpestri $0, 64(%rdx,%rax,4), %xmm6

// CHECK: pcmpestri $0, 64(%rdx,%rax), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0x74,0x02,0x40,0x00]
pcmpestri $0, 64(%rdx,%rax), %xmm6

// CHECK: pcmpestri $0, 64(%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0x72,0x40,0x00]
pcmpestri $0, 64(%rdx), %xmm6

// CHECK: pcmpestri $0, (%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0x32,0x00]
pcmpestri $0, (%rdx), %xmm6

// CHECK: pcmpestri $0, %xmm6, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x61,0xf6,0x00]
pcmpestri $0, %xmm6, %xmm6

// CHECK: pcmpestrm $0, 485498096, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0x34,0x25,0xf0,0x1c,0xf0,0x1c,0x00]
pcmpestrm $0, 485498096, %xmm6

// CHECK: pcmpestrm $0, -64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0x74,0x82,0xc0,0x00]
pcmpestrm $0, -64(%rdx,%rax,4), %xmm6

// CHECK: pcmpestrm $0, 64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0x74,0x82,0x40,0x00]
pcmpestrm $0, 64(%rdx,%rax,4), %xmm6

// CHECK: pcmpestrm $0, 64(%rdx,%rax), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0x74,0x02,0x40,0x00]
pcmpestrm $0, 64(%rdx,%rax), %xmm6

// CHECK: pcmpestrm $0, 64(%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0x72,0x40,0x00]
pcmpestrm $0, 64(%rdx), %xmm6

// CHECK: pcmpestrm $0, (%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0x32,0x00]
pcmpestrm $0, (%rdx), %xmm6

// CHECK: pcmpestrm $0, %xmm6, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x60,0xf6,0x00]
pcmpestrm $0, %xmm6, %xmm6

// CHECK: pcmpgtq 485498096, %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0x34,0x25,0xf0,0x1c,0xf0,0x1c]
pcmpgtq 485498096, %xmm6

// CHECK: pcmpgtq -64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0x74,0x82,0xc0]
pcmpgtq -64(%rdx,%rax,4), %xmm6

// CHECK: pcmpgtq 64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0x74,0x82,0x40]
pcmpgtq 64(%rdx,%rax,4), %xmm6

// CHECK: pcmpgtq 64(%rdx,%rax), %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0x74,0x02,0x40]
pcmpgtq 64(%rdx,%rax), %xmm6

// CHECK: pcmpgtq 64(%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0x72,0x40]
pcmpgtq 64(%rdx), %xmm6

// CHECK: pcmpgtq (%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0x32]
pcmpgtq (%rdx), %xmm6

// CHECK: pcmpgtq %xmm6, %xmm6
// CHECK: encoding: [0x66,0x0f,0x38,0x37,0xf6]
pcmpgtq %xmm6, %xmm6

// CHECK: pcmpistri $0, 485498096, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0x34,0x25,0xf0,0x1c,0xf0,0x1c,0x00]
pcmpistri $0, 485498096, %xmm6

// CHECK: pcmpistri $0, -64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0x74,0x82,0xc0,0x00]
pcmpistri $0, -64(%rdx,%rax,4), %xmm6

// CHECK: pcmpistri $0, 64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0x74,0x82,0x40,0x00]
pcmpistri $0, 64(%rdx,%rax,4), %xmm6

// CHECK: pcmpistri $0, 64(%rdx,%rax), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0x74,0x02,0x40,0x00]
pcmpistri $0, 64(%rdx,%rax), %xmm6

// CHECK: pcmpistri $0, 64(%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0x72,0x40,0x00]
pcmpistri $0, 64(%rdx), %xmm6

// CHECK: pcmpistri $0, (%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0x32,0x00]
pcmpistri $0, (%rdx), %xmm6

// CHECK: pcmpistri $0, %xmm6, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x63,0xf6,0x00]
pcmpistri $0, %xmm6, %xmm6

// CHECK: pcmpistrm $0, 485498096, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0x34,0x25,0xf0,0x1c,0xf0,0x1c,0x00]
pcmpistrm $0, 485498096, %xmm6

// CHECK: pcmpistrm $0, -64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0x74,0x82,0xc0,0x00]
pcmpistrm $0, -64(%rdx,%rax,4), %xmm6

// CHECK: pcmpistrm $0, 64(%rdx,%rax,4), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0x74,0x82,0x40,0x00]
pcmpistrm $0, 64(%rdx,%rax,4), %xmm6

// CHECK: pcmpistrm $0, 64(%rdx,%rax), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0x74,0x02,0x40,0x00]
pcmpistrm $0, 64(%rdx,%rax), %xmm6

// CHECK: pcmpistrm $0, 64(%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0x72,0x40,0x00]
pcmpistrm $0, 64(%rdx), %xmm6

// CHECK: pcmpistrm $0, (%rdx), %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0x32,0x00]
pcmpistrm $0, (%rdx), %xmm6

// CHECK: pcmpistrm $0, %xmm6, %xmm6
// CHECK: encoding: [0x66,0x0f,0x3a,0x62,0xf6,0x00]
pcmpistrm $0, %xmm6, %xmm6

